// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Speel slimmer, win vaker bij playjonny en profiteer van een ongeëvenaarde selectie aan casinospellen – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Speel slimmer, win vaker bij playjonny en profiteer van een ongeëvenaarde selectie aan casinospellen.

Welkom in de wereld van online casino’s, waar spanning en entertainment hand in hand gaan. playjonny biedt een ongeëvenaarde ervaring voor zowel de beginnende als de ervaren speler. Met een breed scala aan casinospellen, van klassieke slots tot moderne tafelspellen, is er voor ieder wat wils. Het is belangrijk om te weten dat verantwoord spelen van essentieel belang is, en dat plezier altijd voorop moet staan. Door de juiste strategieën toe te passen en je aan de grenzen te houden, kun je optimaal genieten van de opwinding van het online gokken.

Het kiezen van het juiste online casino is cruciaal. Factoren zoals betrouwbaarheid, licenties, betalingsmethoden en klantenservice spelen hierbij een grote rol. Een betrouwbaar casino zorgt voor een eerlijke spelervaring en beschermt je persoonlijke gegevens. Daarnaast is het belangrijk om een casino te kiezen dat verschillende betalingsmethoden aanbiedt, zodat je gemakkelijk je geld kunt storten en opnemen. Een goede klantenservice is ook essentieel, zodat je snel en efficiënt hulp kunt krijgen als je problemen ondervindt.

De Populariteit van Online Casino’s

De populariteit van online casino’s is de afgelopen jaren enorm toegenomen. Dit komt door de gemakkelijke toegang, de brede selectie aan spellen en de aantrekkelijke bonussen die worden aangeboden. Je kunt tegenwoordig vanuit het comfort van je eigen huis spelen, op elk gewenst moment van de dag. Bovendien bieden online casino’s vaak spellen aan die je in een fysiek casino niet kunt vinden, zoals speciale thema-slots en live dealer spellen. De concurrentie tussen de verschillende casino’s zorgt ervoor dat ze voortdurend proberen spelers aan te trekken met innovatieve functies en aantrekkelijke promoties.

Een belangrijke factor die bijdraagt aan de populariteit van online casino’s, is de mogelijkheid om risicoloos te oefenen. Veel casino’s bieden de mogelijkheid om spellen gratis te spelen, zodat je de regels en strategieën kunt leren zonder echt geld in te zetten. Dit is een ideale manier om je voor te bereiden op het spelen met echt geld, en om te bepalen welke spellen je het leukst vindt.

Het Aanbod van Casinospellen

Het aanbod van casinospellen is enorm divers. Van klassieke slots met fruitymbolen tot moderne videoslots met speciale functies en bonusrondes, er is voor ieder wat wils. Tafelspellen zoals roulette, blackjack en baccarat zijn ook erg populair, en worden vaak aangeboden in verschillende varianten. Daarnaast zijn er nog live dealer spellen, waarbij je tegen een echte dealer speelt via een live videoverbinding. Deze spellen bieden een authentieke casino-ervaring, en zijn vaak erg spannend en sociaal.

Naast de traditionele casinospellen, bieden online casino’s ook steeds meer andere soorten gokspellen aan, zoals poker, bingo en keno. Deze spellen hebben elk hun eigen regels en strategieën, en kunnen een leuke afwisseling bieden van de traditionele casinospellen. Het is belangrijk om de regels van elk spel goed te begrijpen voordat je begint met spelen, zodat je niet voor verrassingen komt te staan.

Speltype Populariteit Mogelijke Winst
Slots Hoog Variabel
Roulette Gemiddeld Afhankelijk van inzet
Blackjack Hoog Strategie afhankelijk
Poker Gemiddeld Vaardigheid afhankelijk

Bonussen en Promoties

Online casino’s bieden regelmatig bonussen en promoties aan om nieuwe spelers aan te trekken en bestaande spelers te belonen. Deze bonussen kunnen verschillende vormen aannemen, zoals een welkomstbonus, een stortingsbonus, gratis spins of een cashback bonus. Een welkomstbonus wordt vaak gegeven aan nieuwe spelers die zich registreren en een eerste storting doen. Een stortingsbonus is een percentage van je storting dat je als bonus ontvangt. Gratis spins zijn gratis draaibeurten aan een slotmachine, en een cashback bonus is een percentage van je verliezen dat je terugkrijgt. Het is belangrijk om de voorwaarden van een bonus goed te lezen voordat je hem accepteert, zodat je weet wat de inzetvereisten zijn en welke spellen je mag spelen met de bonus.

Zoek bij playjonny naar promotiestructuren, omdat de spelers hun potentiële smakelijke stortingen moeten maximaliseren. De meeste casino’s geven bonussen weg. Het is cruciaal om de voorwaarden te kennen, aangezien verschillende bonussen verschillende inzetvereisten kunnen hebben. Een redelijke bonus, vaak afgestemd op de storting, creëert een stimulans voor beginnende online gokkers om meer tijd in een casino door te brengen.

Verantwoord Spelen

Verantwoord spelen is essentieel bij online gokken. Het is belangrijk om je aan een budget te houden en alleen te spelen met geld dat je kunt missen. Stel een limiet aan hoeveel je kunt storten en besteden per dag, week of maand, en houd je hieraan. Neem regelmatig pauzes tijdens het spelen, en laat je niet meeslepen door de opwinding van het spel. Als je merkt dat je gokgedrag uit de hand loopt, zoek dan hulp bij een organisatie die gespecialiseerd is in gokverslaving.

Veel online casino’s bieden tools aan om je te helpen verantwoord te spelen, zoals stortingslimieten, verlieslimieten en self-exclusion. Met een stortingslimiet kun je bepalen hoeveel geld je per dag, week of maand kunt storten. Met een verlieslimiet kun je bepalen hoeveel geld je per dag, week of maand kunt verliezen. Met self-exclusion kun je jezelf tijdelijk uitsluiten van het casino. Maak gebruik van deze tools om je gokgedrag onder controle te houden.

Tips voor Verantwoord Spelen

Er zijn een aantal tips die je kunt volgen om verantwoord te spelen. Ten eerste is het belangrijk om je bewust te zijn van de risico’s van het online gokken. Gokken kan verslavend zijn, en het is belangrijk om je hiertegen te beschermen. Ten tweede is het belangrijk om je eigen grenzen te kennen en je daaraan te houden. Stel een budget vast en houd je eraan, neem regelmatig pauzes en laat je niet meeslepen door de opwinding van het spel. Ten derde is het belangrijk om te onthouden dat gokken entertainment moet zijn, en dat je het niet als een manier moet zien om geld te verdienen.

Als je merkt dat je problemen hebt met gokken, zoek dan hulp bij een organisatie die gespecialiseerd is in gokverslaving. Er zijn verschillende organisaties die je kunnen helpen jouw gokgedrag onder controle te krijgen en je te ondersteunen bij het herstel. Schroom niet om hulp te vragen, want je staat er niet alleen voor.

  • Stel een budget vast en houd je eraan.
  • Neem regelmatig pauzes.
  • Speel alleen met geld dat je kunt missen.
  • Zoek hulp als je problemen hebt.

De Toekomst van Online Casino’s

De toekomst van online casino’s ziet er rooskleurig uit. De technologie blijft zich ontwikkelen, en dit zal leiden tot nog meer innovatieve spellen en functies. Virtual reality (VR) en augmented reality (AR) zullen waarschijnlijk een steeds grotere rol gaan spelen in de online casino-ervaring, waardoor je je nog meer kunt onderdompelen in de wereld van het casino. Daarnaast zal de regulering van online casino’s waarschijnlijk strenger worden, waardoor de veiligheid en eerlijkheid van de spellen nog verder worden gewaarborgd.

De opkomst van mobiel gokken is een belangrijke trend. Steeds meer mensen spelen casinospellen op hun smartphone of tablet, en casino’s passen hun websites en spellen aan om te zorgen voor een optimale mobiele ervaring. Het gemak en de flexibiliteit van mobiel gokken maken het erg aantrekkelijk voor spelers. Met de voortdurende ontwikkeling van mobiele technologie zal mobiel gokken waarschijnlijk nog populairder worden in de toekomst.

  1. Verbeterde mobiele ervaring
  2. Toename van VR/AR integratie
  3. Strengere regulering
  4. Meer focus op verantwoord spelen
Trend Impact
Mobiel Gokken Grotere flexibiliteit en bereik
VR/AR Immersievere ervaring
Regulering Verhoogde veiligheid en eerlijkheid

playjonny

Design and Develop by Ovatheme